protoc-rust 2.28.0

protoc --rust_out=... available as API. protoc needs to be in $PATH, protoc-gen-run does not.
Documentation

API to generate .rs files using protoc to parse files

This API requires protoc command present in $PATH or explicitly passed to Codegen object (but protoc plugin is not needed).

extern crate protoc_rust;

fn main() {
    protoc_rust::Codegen::new()
        .out_dir("src/protos")
        .inputs(&["protos/a.proto", "protos/b.proto"])
        .include("protos")
        .run()
        .expect("Running protoc failed.");
}

and in build.rs:

[build-dependencies]
protoc-rust = "2"

It is advisable that protoc-rust build-dependency version be the same as protobuf dependency.

The alternative is to use protobuf-codegen-pure crate.

Protoc binary

This crate searches for protoc binary in $PATH by default.

protoc binary can be obtained using protoc-bin-vendored crate and supplied to Codegen object.

This is version 2

In branch 3 of rust-protobuf this functionality is provided by protobuf-codegen crate.